package com.ea.mapper;


import com.ea.domain.dto.LoginUpdateDTO;
import com.ea.domain.entity.AdminInfo;
import com.ea.domain.query.AdminQueryDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 管理员信息表 Mapper 接口
 * </p>
 *
 * @author 电器商城
 * @since 2022-11-29
 */
@Mapper
public interface AdminInfoMapper {

    /**
     * 根据账号查找管理员信息
     * @param loginAccount loginAccount
     * @return AdminInfo
     */
    AdminInfo selectAdminInfoByAccount(@Param(value = "loginAccount") String loginAccount);

    /**
     * 根据管理员id查找管理员信息
     * @param adminId adminId
     * @return AdminInfo
     */
    AdminInfo selectAdminInfoByAdminId(@Param(value = "adminId") Long adminId);

    /**
     * 管理员列表查询
     * @param queryDTO queryDTO
     * @return list
     */
    List<AdminInfo> selectAllByCondition(AdminQueryDTO queryDTO);

    /**
     * 查找账号数量
     * @param loginAccount loginAccount
     * @return Integer
     */
    Integer selectCountByLoginAccount(@Param(value = "loginAccount") String loginAccount);

    /**
     * 添加管理员
     * @param adminInfo adminInfo
     */
    void insertAdminInfo(AdminInfo adminInfo);

    /**
     * 修改管理员信息
     * @param updateDTO updateDTO
     */
    void updateAdminInfo(LoginUpdateDTO updateDTO);

    /**
     * 注销管理员
     * @param adminId adminId
     */
    void updateWriteOffAdmin(Long adminId);

    /**
     * 修改管理员密码
     * @param adminId adminId
     * @param encryptPassword encryptPassword
     */
    void updateAccountPassword(Long adminId, @Param(value = "encryptPassword") String encryptPassword);
}
